index.js ➔ userLanguageObject   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
nc 1
dl 0
loc 14
rs 9.4285
nop 1
1
'use strict'
2
3
import assert from 'assert-plus'
4
import i18next from 'i18next'
5
import resources from './locales'
6
import acceptLanguage from 'accept-language'
7
8
// supported languages
9
export const languages = ['en-US', 'pt-BR']
10
11
i18next.init({
12
  lng: 'en-US',
13
  fallbackLng: languages,
14
  resources
15
})
16
17
i18next.handler = function () {
18
  return function (request, response, next) {
19
    request.i18n = i18next
20
    request.t = i18next.t.bind(i18next)
21
22
    return next()
23
  }
24
}
25
26
export default i18next
27
28
// sets the language by the header
29
export const changeLangRequest = function (request) {
30
  assert.object(request, 'request')
31
  assert.object(request.i18n, 'request.i18n')
32
33
  const { i18n } = request
34
35
  const language = request.headers['accept-language']
36
  i18n.changeLanguage(acceptLanguage.get(language))
37
38
  return i18n
39
}
40
41
// defines a language according to user settings
42
export const userLanguageObject = function (request) {
43
  assert.object(request, 'request')
44
  assert.object(request.user, 'request.user')
45
46
  const { user } = request
47
48
  assert.object(user.account, 'user.account')
49
  assert.ok(user.account.language, 'user.account.language')
50
51
  const language = user.account.language
52
  i18next.changeLanguage(acceptLanguage.get(language))
53
54
  return i18next
55
}
56